package miku.firstgame.net
{
	import miku.firstgame.net.pack.IReceivePack;

	/**
	 * 连接处理的接口
	 * 使用：
	 * class ConnectionHandler implements IConnectionHandler
	 * {
	 * 		...
	 * }
	 *
	 * Connection.setHandler(new ConnectionHandler());
	 */
	public interface IConnectionHandler
	{
		/**
		 * 当尝试连接成功
		 */
		//TODO TODOID201004020001 为了适应负载均衡环境，先这样改
		function handleConnect(connection:IConnection):void;

		/**
		 * 当连接关闭
		 */
		//TODO TODOID201004020001 为了适应负载均衡环境，先这样改
		function handleClose(conection:IConnection):void;

		/**
		 * 当尝试连接失败
		 */
		//TODO TODOID201004020001 为了适应负载均衡环境，先这样改
		function handleError(connection:IConnection):void;

		/**
		 * 当连接受到服务器的数据
		 * @param data xml对象
		 */
		//TODO TODOID201004020001 为了适应负载均衡环境，先这样改
		function handleData(data:IReceivePack, connection:IConnection):void;

		//TODO 这里的设计逻辑有问题，ConnectionHandler是不能够跟协议处理相关的
		/**
		 * 注册一个协议处理函数，这个函数将处理interest数组中指定的从服务器接收到的协议数据
		 * @param handler 处理函数
		 * @param interest 感兴趣的协议名的数组，数组中的元素的是协议名的字符串
		 */
		function registerProtocolInterest(handler:Function, interest:Array):void;
		function unregisterHandler(handler:Function):void;
	}
}
